class EvasionsController < ApplicationController

  before_filter :login_required
  require_role 'pedagogico', :except=>[:index, :list, :show]
  
  def index
    store_location
    list
    render :action => 'list'
  end

  # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html)
  verify :method => :post, :only => [ :destroy, :create, :update ],
         :redirect_to => { :action => :list }

  def list
    store_location
    @evasion_pages, @evasions = paginate :evasions, :per_page => 15, :order=>"fecha DESC"
    
    @page, @lnk_from, @lnk_to = numeros_pagina @evasion_pages
  end

  def show
    @evasion = Evasion.find(params[:id])
  end

  def new
    @evasion = Evasion.new
    @evasion.fecha = Date.today()
    @personas = Persona.find_alumnos(:all)
    
    # preseteo el alumno segun lo que llego por params
    if params[:evasion_alumno] != nil then 
      
      # por si estoy creando evasion en alguien que no es alumno
      p = Persona.find(params[:evasion_alumno])
      unless p.es_alumno?
        @personas.push(p)
      end
      
      @evasion.persona_id = params[:evasion_alumno]
    end    
  end


  # utilizo actualizar_coeficiente que tiene en cuenta fechas de matriculas y evasiones
  def create
    @evasion = Evasion.new(params[:evasion])
    if @evasion.save
      flash[:success] = 'Evasion was successfully created.'
      redirect_back_or_default :action => 'list', :controller=>'evasions'
    else
      render :action => 'new'
    end
  end

  def edit
    @evasion = Evasion.find(params[:id])
    @personas = Persona.find_alumnos(:all)
    # agrego la persona de esta evasion que ya no es alumno
    @personas.push(@evasion.persona)
  end

  # utilizo actualizar_coeficiente que tiene en cuenta fechas de matriculas y evasiones
  def update
    @evasion = Evasion.find(params[:id])
    if @evasion.update_attributes(params[:evasion])
      flash[:success] = 'Baja modificada.'
      redirect_back_or_default :action => 'show', :id => @evasion
    else
      flash[:error] = "No se pudo modificar la baja."
      render :action => 'edit'
    end
  end

  def destroy
    @evasion = Evasion.find(params[:id])
    @evasion.destroy
    redirect_back_or_default :action => 'list'
  end
end
